﻿using System.Runtime;
using System.Collections.Generic;

namespace System.Reflection
{
    [NonScript]
    public class ParameterInfo : ICustomAttributeProvider
    {
        public virtual Type ParameterType
        {
            [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
            get { return null; }
        }

        public virtual string Name
        {
            [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
            get { return null; }
        }

        public virtual object DefaultValue
        {
            get { return null; }
        }

        public virtual object RawDefaultValue
        {
            get { return null; }
        }

        public virtual int Position
        {
            [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
            get { return 0; }
        }

        public virtual ParameterAttributes Attributes
        {
            [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
            get { return ParameterAttributes.HasDefault; }
        }

        public virtual MemberInfo Member
        {
            [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
            get { return null; }
        }

        public bool IsIn
        {
            get { return false; }
        }

        public bool IsOut
        {
            get { return false; }
        }

        public bool IsLcid
        {
            get { return false; }
        }

        public bool IsRetval
        {
            get { return false; }
        }

        public bool IsOptional
        {
            get { return false; }
        }

        public virtual int MetadataToken
        {
            get { return 0; }
        }

        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        protected ParameterInfo()
        {
        }

        public virtual Type[] GetRequiredCustomModifiers()
        {
            return new Type[0];
        }

        public virtual Type[] GetOptionalCustomModifiers()
        {
            return new Type[0];
        }

        public virtual object[] GetCustomAttributes(bool inherit)
        {
            return new object[0];
        }

        public virtual object[] GetCustomAttributes(Type attributeType, bool inherit)
        {
            return new object[0];
        }

        public virtual bool IsDefined(Type attributeType, bool inherit)
        {
            return false;
        }

        public virtual IList<CustomAttributeData> GetCustomAttributesData()
        {
            return null;
        }
    }
}
